package com.jzo2o.customer.service;

import com.jzo2o.api.customer.dto.response.AddressBookResDTO;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.customer.model.domain.AddressBook;
import com.jzo2o.customer.model.dto.request.AddressBookPageQueryReqDTO;
import com.jzo2o.customer.model.dto.request.AddressBookUpsertReqDTO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 地址薄 服务类
 * </p>
 *
 * @author itcast
 * @since 2023-07-06
 */
public interface IAddressBookService extends IService<AddressBook> {

    /**
     * 根据用户id和城市编码获取地址
     *
     * @param userId 用户id
     * @param cityCode 城市编码
     * @return 地址编码
     */
    List<AddressBookResDTO> getByUserIdAndCity(Long userId, String cityCode);

    /**
     * 获取默认地址
     * @return 默认地址信息
     */
    AddressBookResDTO defaultAddress();

    /**
     *新增地址簿
     * @param dto 前端传来的新增地址信息
     */
    void insertAddress(AddressBookUpsertReqDTO dto);

    /**
     * 地址簿列表
     * @param dto 前端传来分页信息
     * @return  地址簿列表
     */
    PageResult<AddressBook> addressPage(AddressBookPageQueryReqDTO dto);

    /**
     * 地址簿详情
     * @param id 地址id
     * @return
     */
    AddressBook addressDetails(Long id);

    /**
     * 地址簿编辑
     * @param dto 修改的信 息
     * @param id 地址id
     * @return
     */
    void updateAddress(AddressBookUpsertReqDTO dto, Long id);

    /**
     * 地址簿删除
     * @param ids 地址id集合
     */
    void batchDelete(List<Long> ids);

    /**
     * 设置默认地址
     * @param flag  是否是默认地址
     * @param id 地址id
     */
    void defaultAddr(Long flag, Long id);
}
